package com.mhs.DTO;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class MySQLiteHelper extends SQLiteOpenHelper{
	// Table phanloaithuoc
	public static final String TABLE_PHANLOAITHUOC = "phanloaithuoc";
	public static final String COLUMN_MALOAITHUOC_CLIENT = "maloaithuocclient";
	public static final String COLUMN_MALOAITHUOC = "maloaithuoc";
	public static final String COLUMN_TENLOAITHUOC = "tenloaithuoc";
	public static final String COLUMN_GHICHU = "ghichu";
	public static final String COLUMN_K_PHANLOAITHUOC = "K";
	public static final String COLUMN_SIZE_PHANLOAITHUOC = "size";
	public static final String COLUMN_TS_PHANLOAITHUOC = "TS";
	public static final String COLUMN_TTL_PHANLOAITHUOC = "TTL";
	public static final String COLUMN_LOCK_PHANLOAITHUOC = "lock";
	
	// Table thuoc
	public static final String TABLE_THUOC = "thuoc";
	public static final String COLUMN_MATHUOC_CLIENT = "mathuocclient";
	public static final String COLUMN_MATHUOC = "mathuoc";
	public static final String COLUMN_MALOAITHUOC_FK = "maloaithuoc";
	public static final String COLUMN_HINHANH = "hinhanh";
	public static final String COLUMN_TENTHUOC = "tenthuoc";
	public static final String COLUMN_SODANGKY = "sodangky";
	public static final String COLUMN_THANHPHAN = "thanhphan";
	public static final String COLUMN_DANGBAOCHE = "dangbaoche";
	public static final String COLUMN_DONGGOI = "donggoi";
	public static final String COLUMN_CONGTYSANXUAT = "congtysanxuat";
	public static final String COLUMN_CHIDINH = "chidinh";
	public static final String COLUMN_CHONGCHIDINH = "chongchidinh";
	public static final String COLUMN_TUONGTACTHUOC = "tuongtacthuoc";
	public static final String COLUMN_CHUYDEPHONG = "chuydephong";
	public static final String COLUMN_TACDUNGPHU = "tacdungphu";
	public static final String COLUMN_LIEULUONG = "lieuluong";
	public static final String COLUMN_NHANBIET = "nhanbiet";
	public static final String COLUMN_BAOQUAN = "baoquan";
	public static final String COLUMN_K_THUOC = "K";
	public static final String COLUMN_SIZE_THUOC = "size";
	public static final String COLUMN_TS_THUOC = "TS";
	public static final String COLUMN_TTL_THUOC = "TTL";
	public static final String COLUMN_LOCK_THUOC = "lock";
	
	// Database MHS
	private static final String DATABASE_NAME = "mhs_db_4";
	private static final int DATABASE_VERSION = 1;
	
	// View 
	public static final String viewMHS_Thuoc = "ViewMHS_Thuoc";
	
	// Database creation sql statement
	// Create table PhanLoaiThuoc
	private static final String CREATE_TABLE_PHANLOAITHUOC = "CREATE TABLE " + TABLE_PHANLOAITHUOC 
			+ "(" + COLUMN_MALOAITHUOC_CLIENT + " INTEGER PRIMARY KEY AUTOINCREMENT, "
			+ 		COLUMN_MALOAITHUOC + " INTEGER, "
			+ 		COLUMN_TENLOAITHUOC + " TEXT NOT NULL, "
			+ 		COLUMN_GHICHU + " TEXT,"
			+ 		COLUMN_K_PHANLOAITHUOC + " INTEGER NOT NULL," 
			+		COLUMN_SIZE_PHANLOAITHUOC + " INTEGER,"
			+		COLUMN_TS_PHANLOAITHUOC + " TEXT,"
			+		COLUMN_TTL_PHANLOAITHUOC + " INTEGER,"
			+		COLUMN_LOCK_PHANLOAITHUOC + " INTEGER); ";

	// Create table Thuoc
	private static final String CREATE_TABLE_THUOC = "CREATE TABLE " + TABLE_THUOC
			+ "(" + COLUMN_MATHUOC_CLIENT + " INTEGER PRIMARY KEY AUTOINCREMENT, "
			+ 		COLUMN_MATHUOC + " INTEGER, "
			+ 		COLUMN_HINHANH + " TEXT, "
			+		COLUMN_TENTHUOC + " TEXT, "
			+		COLUMN_SODANGKY + " TEXT, "
			+		COLUMN_THANHPHAN + " TEXT, "
			+		COLUMN_DANGBAOCHE + " TEXT, "
			+		COLUMN_DONGGOI + " TEXT, "
			+		COLUMN_CONGTYSANXUAT + " TEXT, "
			+		COLUMN_CHIDINH + " TEXT, "
			+		COLUMN_CHONGCHIDINH + " TEXT, "
			+		COLUMN_TUONGTACTHUOC + " TEXT, "
			+		COLUMN_CHUYDEPHONG + " TEXT, "
			+		COLUMN_TACDUNGPHU + " TEXT, "
			+		COLUMN_LIEULUONG + " TEXT, "
			+		COLUMN_NHANBIET + " TEXT, "
			+		COLUMN_BAOQUAN + " TEXT, "
			+		COLUMN_K_THUOC + " INTEGER NOT NULL, "
			+		COLUMN_SIZE_THUOC + " INTEGER, "
			+		COLUMN_TS_THUOC + " TEXT, "
			+		COLUMN_TTL_THUOC + " INTEGER, "
			+		COLUMN_LOCK_THUOC + " INTEGER, "
			+		COLUMN_MALOAITHUOC_FK + " INTEGER NOT NULL, "
			+		" FOREIGN KEY (" + COLUMN_MALOAITHUOC_FK + ") REFERENCES " + TABLE_PHANLOAITHUOC + " (" + COLUMN_MALOAITHUOC_CLIENT + "));";
	
	private static final String CREATE_TABLE_USER = "create table user" +
					"(	username text primary key," +
					"	password text," +
					"	IMEI text," +
					"	ip_client text);";
	
	private static final String CREATE_TABLE_IR = "create table IR" +
			"(	IdIR INTEGER primary key AUTOINCREMENT," +
			"	Ma INTEGER," +
			"	TableName TEXT," +
			"	Command TEXT);";
	
	private static final String CREATE_TABLE_BENHVIEN = "create table benhvien" +
			"( 	MaBVclient INTEGER primary key AUTOINCREMENT," +
			"	MaBV INTEGER," +
			"	TenBV TEXT," +
			"	DiaChi TEXT," +
			"	DienThoai TEXT," +
			"	Latitude TEXT," +
			"	Longtitude TEXT," +
			"	K INTEGER," +
			"	Size INTEGER, " +
			"	TS TEXT," +
			"	TTL INTEGER);";
	
	// Create trigger Thuoc_PhanLoaiThuoc
	private static final String CREATE_TRIGGER_THUOC_PHANLOAITHUOC = "CREATE TRIGGER FK_THUOC_PHANLOAITHUOC "
			+ " BEFORE INSERT "
			+ " ON " + TABLE_THUOC
			+ " FOR EACH ROW BEGIN "
				+ " SELECT CASE WHEN ((	SELECT " + COLUMN_MALOAITHUOC_CLIENT 
								+ " FROM " + TABLE_PHANLOAITHUOC 
								+ " WHERE " + COLUMN_MALOAITHUOC_CLIENT + " = new." + COLUMN_MALOAITHUOC_FK + " ) IS NULL)"
						+ " THEN RAISE (ABORT, 'Foreign Key Vioation') END;"
			+ " END;";

	public MySQLiteHelper(Context context) {
		super(context, DATABASE_NAME, null, DATABASE_VERSION);
	}
	
	@Override
	public void onCreate(SQLiteDatabase db) {
		// create table
		db.execSQL(CREATE_TABLE_BENHVIEN);
		db.execSQL(CREATE_TABLE_PHANLOAITHUOC);
		db.execSQL(CREATE_TABLE_THUOC);
		db.execSQL(CREATE_TABLE_USER);
		db.execSQL(CREATE_TABLE_IR);
		// create trigger
		db.execSQL(CREATE_TRIGGER_THUOC_PHANLOAITHUOC);
		// insert data into table
		InsertDataIntoTablePhanLoaiThuoc(db);
		//InsertDataIntoTableThuoc(db);
		InsertDataIntoTableUser(db);
	}

//	private void InsertDataIntoTableThuoc(SQLiteDatabase db) {
//		String insertQuery = "INSERT INTO thuoc(mathuocclient, mathuoc, maloaithuoc, hinhanh, tenthuoc, sodangky, thanhphan, dangbaoche, donggoi, congtysanxuat, chidinh, chongchidinh, tuongtacthuoc, chuydephong, tacdungphu, lieuluong, nhanbiet, baoquan, K, size, TS, TTL)  VALUES (null, 514, 46, 'http://thuocbietduoc.com.vn/images/drugs/MEKOPHAR/Penicillin_V.gif ', 'Penicillin V 400 000UI',  'VNA-4629-01', 'Penicillin',  'Viên nén bao phim', 'Hộp 10 vỉ x 10 viên nén bao phim',  'Công ty cổ phần hóa - Dược phẩm Mekophar', '- Viêm amiđan, viêm họng, viêm tai giữa cấp, viêm xoang, viêm phế quản, viêm phổi, chốc, nhọt, áp xe, viêm tấy. - Nhiễm trùng do vết cắn.- Phòng ngừa sốt thấp khớp, co giật, viêm đa khớp, viêm vi cầu thận, viêm nội tâm mạc ở  bệnh tim bẩm sinh hay thấp khớp trước & sau phẫu thuật cắt amiđan, nhổ răng.- nhiễm phế cầu.', 'Quá mẫn với penicillin. Quá mẫn với cephalosporin. Rối loạn tiêu hóa gây tiêu chảy, nôn kéo dài.',  '- Thuốc kháng viêm, chống thấp khớp & thuốc hạ sốt: indomethacin, phenylbutazone, salicylate, Probenecid.- Thuốc uống ngừa thai.', 'Thận trọng ở bệnh nhân có tạng dị ứng. Ðiều trị lâu ngày với penicillin liều cao, phải kiểm tra chức năng thận, gan & hệ tạo máu. Lưu y chẩn đoán viêm ruột giả mạc khi bị tiêu chảy. Phụ nữ có thai & cho con bú.', 'Phản ứng quá mẫn. Buồn nôn, nôn, tiêu chảy, đầy bụng, viêm dạ dày, viêm lưỡi ít gặp. Thay đổi huyết học.',  'Người lớn: 3 - 4,5 triệu IU/ngày. Trẻ em: 50000 - 100000 IU/kg/ngày.', 'Chờ cập nhật', 'Chờ cập nhật', 0, 1465, 1339004632511, 7);";
//		db.execSQL(insertQuery);
//		String insertQuery2 = "INSERT INTO thuoc(mathuocclient, mathuoc, maloaithuoc, hinhanh, tenthuoc, sodangky, thanhphan, dangbaoche, donggoi, congtysanxuat, chidinh, chongchidinh, tuongtacthuoc, chuydephong, tacdungphu, lieuluong, nhanbiet, baoquan, K, size, TS, TTL)  VALUES (null, 515, 46, 'http://thuocbietduoc.com.vn/images/drugs/drg_img.jpg', 'Benzathin benzylpenicilin',  'VD-1526-06', 'Benzathine benzylpenicillin',  'Thuốc bột tiêm', 'Hộp 50 lọ thuốc bột tiêm 1.2 tr IU',  'Công ty liên doanh Dược phẩm Việt-Trung', 'Nhiễm trùng do các mầm bệnh nhạy cảm, chủ yếu: dự phòng tái phát viêm thấp khớp cấp tính, điều trị bệnh giang mai, ghẻ cóc.', 'Quá mẫn với nhóm penicilline.',  'Chờ cập nhật', 'Không tiêm IV. Phải xác định rõ bệnh nhân không bị quá mẫn với nhóm beta-lactam. Phụ nữ có thai & cho con bú.', 'Dị ứng: sốt, mày đay, tăng bạch cầu ái toan, phù Quincke, hiếm: sốc phản vệ. Thiếu máu, giảm tiểu cầu, giảm bạch cầu (có thể hồi phục).',  'Tiêm bắp sâu. Dự phòng tái phát viêm thấp khớp cấp 1 mũi mỗi 15 ngày, người lớn: 2,4 MIU/lần, trẻ em: 0,6 - 1,2 MIU/lần. Bệnh do xoắn khuẩn 1 mũi 2,4 MIU mỗi 8 ngày.', 'Chờ cập nhật', 'Chờ cập nhật', 0, 1034, 1339004697147, 7);";
//		db.execSQL(insertQuery2);
//	}
	
	private void InsertDataIntoTableUser(SQLiteDatabase db) {
		String value1 = "INSERT INTO user VALUES('test', 'test', null, null);";
		db.execSQL(value1);
	}

	private void InsertDataIntoTablePhanLoaiThuoc(SQLiteDatabase db) {
		String value1 = "INSERT INTO phanloaithuoc VALUES(41, 41, 'Thuốc gây tê, mê', 'Nothing', 0, null, null, 30, 0);";
		db.execSQL(value1);
		String value2 = "INSERT INTO phanloaithuoc VALUES(42, 42, 'Thuốc giảm đau, hạ sốt, Nhóm chống viêm không Steroid, Thuốc điều trị Gút và các bệnh xương khớp', 'Nothing', 0, null, null, 30, 0);";
		db.execSQL(value2);
		String value3 = "INSERT INTO phanloaithuoc VALUES(43, 43, 'Thuốc chống dị ứng và dùng trong các trường hợp quá mẫn', 'Nothing', 0, null, null, 30, 0);";
		db.execSQL(value3);
		String value4 = "INSERT INTO phanloaithuoc VALUES(44, 44, 'Thuốc cấp cứu và giải độc', 'Nothing', 0, null, null, 30, 0);";
		db.execSQL(value4);
		String value5 = "INSERT INTO phanloaithuoc VALUES(45, 45, 'Thuốc hướng tâm thần', 'Nothing', 0, null, null, 30, 0);";
		db.execSQL(value5);
		String value6 = "INSERT INTO phanloaithuoc VALUES(46, 46, 'Thuốc trị ký sinh trùng, chống nhiễm khuẩn', 'Nothing', 0, null, null, 30, 0);";
		db.execSQL(value6);
		String value7 = "INSERT INTO phanloaithuoc VALUES(47, 47, 'Thuốc điều trị đau nửa đầu', 'Nothing', 0, null, null, 30, 0);";
		db.execSQL(value7);
		String value8 = "INSERT INTO phanloaithuoc VALUES(48, 48, 'Thuốc chống ung thư và tác động vào hệ thống miễn dịch', 'Nothing', 0, null, null, 30, 0);";
		db.execSQL(value8);
		String value9 = "INSERT INTO phanloaithuoc VALUES(49, 49, 'Thuốc hỗ trợ trong điều trị bệnh đường tiết niệu', 'Nothing', 0, null, null, 30, 0);";
		db.execSQL(value9);
		String value10 = "INSERT INTO phanloaithuoc VALUES(50, 50, 'Thuốc chống Parkinson', 'Nothing', 0, null, null, 30, 0);";
		db.execSQL(value10);
		String value11 = "INSERT INTO phanloaithuoc VALUES(51,51, 'Thuốc tác dụng đối với máu', 'Nothing', 0, null, null, 30, 0);";
		db.execSQL(value11);
		String value12 = "INSERT INTO phanloaithuoc VALUES(52, 52, 'Máu, Chế phẩm máu - Dung dịch cao phân tử', 'Nothing', 0, null, null, 30, 0);";
		db.execSQL(value12);
		String value13 = "INSERT INTO phanloaithuoc VALUES(53, 53, 'Thuốc tim mạch', 'Nothing', 0, null, null, 30, 0);";
		db.execSQL(value13);
		String value14 = "INSERT INTO phanloaithuoc VALUES(54, 54, 'Thuốc điều trị bệnh da liễu', 'Nothing', 0, null, null, 30, 0);";
		db.execSQL(value14);
		String value15 = "INSERT INTO phanloaithuoc VALUES(55, 55, 'Thuốc dùng chẩn đoán', 'Nothing', 0, null, null, 30, 0);";
		db.execSQL(value15);
		String value16 = "INSERT INTO phanloaithuoc VALUES(56, 56, 'Thuốc sát khuẩn', 'Nothing', 0, null, null, 30, 0);";
		db.execSQL(value16);
		String value17 = "INSERT INTO phanloaithuoc VALUES(57, 57, 'Thuốc lợi tiểu', 'Nothing', 0, null, null, 30, 0);";
		db.execSQL(value17);
		String value18 = "INSERT INTO phanloaithuoc VALUES(58, 58, 'Thuốc đường tiêu hóa', 'Nothing', 0, null, null, 30, 0);";
		db.execSQL(value18);
		String value19 = "INSERT INTO phanloaithuoc VALUES(59, 59, 'Hocmon, Nội tiết tố', 'Nothing', 0, null, null, 30, 0);";
		db.execSQL(value19);
		String value20 = "INSERT INTO phanloaithuoc VALUES(60, 60, 'Huyết thanh và Globulin miễn dịch', 'Nothing', 0, null, null, 30, 0);";
		db.execSQL(value20);
		String value21 = "INSERT INTO phanloaithuoc VALUES(61, 61, 'Thuốc giãn cơ và tăng trương lực cơ', 'Nothing', 0, null, null, 30, 0);";
		db.execSQL(value21);
		String value22 = "INSERT INTO phanloaithuoc VALUES(62, 62, 'Thuốc dùng điều trị mắt, tai mũi họng', 'Nothing', 0, null, null, 30, 0);";
		db.execSQL(value22);
		String value23 = "INSERT INTO phanloaithuoc VALUES(63, 63, 'Thuốc có tác dụng thúc đẻ, cầm máu sau đẻ và chống đẻ non', 'Nothing', 0, null, null, 30, 0);";
		db.execSQL(value23);
		String value24 = "INSERT INTO phanloaithuoc VALUES(64, 64, 'Dung dịch thẩm phân phúc mạc', 'Nothing', 0, null, null, 30, 0);";
		db.execSQL(value24);
		String value25 = "INSERT INTO phanloaithuoc VALUES(65, 65, 'Thuốc tác dụng trên đường hô hấp', 'Nothing', 0, null, null, 30, 0);";
		db.execSQL(value25);
		String value26 = "INSERT INTO phanloaithuoc VALUES(66, 66, 'Dung dịch điều chỉnh nước điện giải và cân bằng Acid-Base', 'Nothing', 0, null, null, 30, 0);";
		db.execSQL(value26);
		String value27 = "INSERT INTO phanloaithuoc VALUES(67, 67, 'Khoáng chất và Vitamin', 'Nothing', 0, null, null, 30, 0);";
		db.execSQL(value27);
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		Log.w(MySQLiteHelper.class.getName(),
				"Upgrading database from version " + oldVersion + " to "
						+ newVersion + ", which will destroy all old data");
		// Drop table
		//db.execSQL("DROP TABLE IF EXISTS " + TABLE_THUOC);
		db.execSQL("DROP TABLE IF EXISTS " + TABLE_PHANLOAITHUOC);
		// Drop trigger
		db.execSQL("DROP TRIGGER IF EXISTS FK_THUOC_PHANLOAITHUOC");
		// Drop view
		db.execSQL("DROP VIEW IF EXISTS " + viewMHS_Thuoc);
		onCreate(db);
	}

	public Cursor getAllPhanLoaiThuoc() {
		SQLiteDatabase db = this.getReadableDatabase();
		Cursor cur = db.rawQuery("SELECT " + COLUMN_MALOAITHUOC_CLIENT + " as _id, " + COLUMN_TENLOAITHUOC + " FROM " + TABLE_PHANLOAITHUOC, new String [] {});
		return cur;
	}
	
	
}
